#ifndef _FONTFACE_H_
#define _FONTFACE_H_

#include "FSettings.h"

namespace Font
{

	class CharMap;
	class FaceHandle;

	class Face
	{
	
	public:
	
		Face(Library* a_Library, Family* a_Parent);
		~Face();

		void SetMetrics(Metrics* a_Metrics);
		Metrics* GetMetrics();

		void SetLoader(Loader* a_Loader);
		Loader* GetLoader();

		FaceHandle* GetHandle(unsigned int a_Size, unsigned int a_Options = 0, CharMap* a_Map = NULL);
		Family* GetFamily();

		CharMap* GetCharMap();
	
	protected:

		Family* m_Family;
		Loader* m_Loader;
		Metrics* m_Metrics;

		CharMap* m_CharMap;

		std::vector<FaceHandle*> m_Handles;
		std::map<unsigned int, FaceHandle*> m_HandlesBySize;

		Library* m_Library;
	
	}; // class FontFace

}; // namespace Rpt
	
#endif